/*
 * jQuery Plugin: ip input box
 * Version 0.1
 *
 * Copyright (c) 2010 hjzheng (http://hi.baidu.com/hjzheng/home)
 * Licensed jointly under the GPL and MIT licenses,
 * choose which one suits your project best!
 *
 */


(function($) {

	$.fn.ipInput = function(options, b) {
		var defaults = {
			value: "",
			height: 22,
			width: 300
		}
		if (typeof(options) == "string") { //如果是string 说名为方法的名称
			//alert(options);
			return $.fn.ipInput.methord[options](this, b);
		}

		var options = $.extend({}, defaults, options);

		//return this.each(function() {

		//将元素集合赋给变量 本例中是div对象 
		var $div = $(this);

		$div.addClass("ipInput-border");

		if (options.width < 120) //
			options.width = 120;
		//分解value，并判断value的合法性
		var values = options.value.split(".");
		if (values.length < 4) {
			values = ["0", "0", "0", "0"];
		}

		var cellWidth = (options.width - 24) / 4;
		//初始化input元素
		for (var i = 0; i < 4; i++) {
			var input = $("<input type='text' maxlength='3'  onfocus='javascript:this.select();'/>").width(cellWidth).height(options.height)
				//借用jqx的样式
				.addClass("ipInput-cell jqx-widget-content  jqx-rc-all")
				.val(values[i]) //设置默认值为传入的值
				.keyup(function(event) {
					//获取keyCode值
					var keyCode = event.which;
					//input框
					var $input = $(this);
					//获取input框中的value
					var text = $input.val();
					//处理text中非数字字符
					$input.val(text.replace(/[^\d]/g, ''));
					//防止左右键和Tab键自动跳
					if (keyCode == 39 || keyCode == 37 || keyCode == 9) return false;

					if (text.length >= 3) {
						if (parseInt(text) >= 256 || parseInt(text) <= 0) {
							alert("请输入0~255之间的数");
							$input.val("") //设置默认值为传入的值
							$input[0].focus();
							return false;
						} else {
							if ($input.nextAll("input")[0])
								$input.nextAll("input")[0].focus();
							$input[0].blur();
						}
						//输入点时 自动跳到下一个
					} else if (text.length > 0 && (keyCode == 110 || keyCode == 190)) {
						$input.nextAll("input")[0].focus();
						$input[0].blur();
					}
				});

			//输入IP的分割点
			$div.append(input).append($("<span>.<span>"));
		}
		//清空最后一个 .
		$div.children(":last").empty();


		return this;
		//});
	};
	$.extend($.fn.ipInput.prototype, {
		val: function() {
			return "value";
		}

	});



	//添加 ipinput的取值的方法，如果只有val一个方法参数，返回当前值，否则设置当前值为value
	$.fn.ipInput.methord = {
		val: function(body, value) {
			if (value) { //如果alue存在，且正确的情况下设置值
				var values = value.split("."); //将ip分割为数组，分别填充到对应的单元格
				if (values.length < 4) {
					values = ["0", "0", "0", "0"];
					console.error("ip格式不合法！");
					return;
				}
				//for (var i = 0; i < 4; i++) {
				var inputtext = $(body).find(":text"); //返回所有的<input type="text"的元素
				$(inputtext).each(function(index) {
					$(this).val(values[index]);
				});
				//	}

			} else {
				var result = [];
				var inputtext = $(body).find(":text");
				$(inputtext).each(function() {
					//	alert($(this).val());
					result.push($(this).val()); //返回值
				});
				return result.join("."); //将数组用"."分割为字符串，即ip格式
			}

		},
		enable: function(body) {
			var inputtext = $(body).find(":text");
			$(inputtext).each(function() {
				//	alert($(this).val());
				$(this).removeAttr("disabled");
			});
		},
		disable: function(body) {
			var inputtext = $(body).find(":text");
			$(inputtext).each(function() {
				//	alert($(this).val());
				$(this).attr("disabled", 'true');
			});
		}
	}

})(jQuery);